package br.edu.unilasalle.simon_api.domain;

// Generated 08/03/2014 18:19:52 by Hibernate Tools 4.0.0

import static javax.persistence.GenerationType.IDENTITY;

import java.util.HashSet;
import java.util.Set;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;

import org.codehaus.jackson.annotate.JsonIgnoreProperties;

import br.edu.unilasalle.simon_api.util.StringUtil;

/**
 * Fornecedor generated by hbm2java
 */
@Entity
@Table(name = "fornecedor", catalog = "simon")
@JsonIgnoreProperties(value = { "handler", "hibernateLazyInitializer", "produtos" })
public class Fornecedor extends BaseEntityAtivo<Long> {

	private static final long serialVersionUID = -749547353533610628L;
	
	@Id
	@GeneratedValue(strategy = IDENTITY)
	@Column(name = "id", unique = true, nullable = false)
	private Long id;
	
	@ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
	@JoinColumn(name = "id_endereco", nullable = false)
	private EnderecoEntidade enderecoEntidade;
	
	@Column(name = "cnpj", nullable = false, length = 14)
	private String cnpj;
	
	@Column(name = "empresa", nullable = false, length = 150)
	private String empresa;
	
	@Column(name = "contato", nullable = false, length = 150)
	private String contato;
	
	@Column(name = "fone1", nullable = false, length = 15)
	private String fone1;
	
	@Column(name = "fone2", nullable = false, length = 15)
	private String fone2;
	
	@Column(name = "email", nullable = false, length = 100)
	private String email;
	
	@OneToMany(fetch = FetchType.LAZY, mappedBy = "fornecedor")
	private Set<Produto> produtos = new HashSet<Produto>(0);

	public Fornecedor() {
	}
	
	public Fornecedor(Long id, String empresa, String cnpj, String contato, String fone1, Character ativo) {
		this.id = id;
		this.empresa = empresa;
		this.cnpj = cnpj;
		this.contato = contato;
		this.fone1 = fone1;
		this.ativo = ativo;
	}

	public Fornecedor(EnderecoEntidade enderecoEntidade, String cnpj,
			String empresa, String contato, String fone1, String fone2,	
			String email, Character ativo) {
		this.enderecoEntidade = enderecoEntidade;
		this.cnpj = cnpj;
		this.empresa = empresa;
		this.contato = contato;
		this.fone1 = fone1;
		this.fone2 = fone2;
		this.email = email;
		this.ativo = ativo;
	}

	public Fornecedor(EnderecoEntidade enderecoEntidade, String cnpj,
			String empresa, String contato, String fone1, String fone2,
			String email, Character ativo, Set<Produto> produtos) {
		this.enderecoEntidade = enderecoEntidade;
		this.cnpj = cnpj;
		this.empresa = empresa;
		this.contato = contato;
		this.fone1 = fone1;
		this.fone2 = fone2;
		this.email = email;
		this.produtos = produtos;
		this.ativo = ativo;
	}

	public Long getId() {
		return this.id;
	}

	public void setId(Long id) {
		this.id = id;
	}

	public EnderecoEntidade getEnderecoEntidade() {
		return this.enderecoEntidade;
	}

	public void setEnderecoEntidade(EnderecoEntidade enderecoEntidade) {
		this.enderecoEntidade = enderecoEntidade;
	}

	public String getCnpj() {
		return this.cnpj;
	}

	public void setCnpj(String cnpj) {
		this.cnpj = StringUtil.onlyNumbers(cnpj);
	}

	public String getEmpresa() {
		return this.empresa;
	}

	public void setEmpresa(String empresa) {
		this.empresa = empresa;
	}

	public String getContato() {
		return this.contato;
	}

	public void setContato(String contato) {
		this.contato = contato;
	}

	public String getFone1() {
		return this.fone1;
	}

	public void setFone1(String fone1) {
		this.fone1 = StringUtil.onlyNumbers(fone1);
	}

	public String getFone2() {
		return this.fone2;
	}

	public void setFone2(String fone2) {
		this.fone2 = StringUtil.onlyNumbers(fone2);
	}

	public String getEmail() {
		return this.email;
	}

	public void setEmail(String email) {
		this.email = email;
	}

	public Set<Produto> getProdutos() {
		return this.produtos;
	}

	public void setProdutos(Set<Produto> produtos) {
		this.produtos = produtos;
	}

}
